地图显示事件监听 Sample详情

最后更新时间:2019年7月5日

当对地图进行移动、缩放、旋转等操作时,地图视图不断在刷新、变化,并且能够监听到种种变化,如:级别变化、旋转角度变化、中心点变化、位置变化、地图刷新、动画操作。MapView地图视图控件提供了对应的监听器来捕捉事件,并在回调方法中提供变化前后的数值。

重要说明:这几种监听事件提供的回调函数都是在子线程中响应的,获取其中信息后如果需要操作UI界面,则需回到主线程操作。

这些地图变化的监听都由MapViewDelegate地图控件代理协议提供,在使用之前,需使ViewController遵守协议,然后为MGSMapView对象设置协议,最后实现其回调函数,核心代码如下:

@interface ShowListen_ViewController ()<MapViewDelegate>
_mapView.delegate = self;

1 地图级别变化监听

监听地图缩放级别的变化情况,可获取变化前后的地图分辨率。

-(void)zoomChangedWithMapView:(MGSMapView*) mapView oldResolution:(double) oldResolution newResolution:(double) newResolution;
{
    //可以获取地图级别发生变化前后的分辨率
}

2 地图旋转角度变化监听

监听地图旋转角度的变化情况,可获取旋转前后的角度值。

-(void)rotateChangedWithMapView:(MGSMapView*) mapView oldAngle:(float) oldAngle newAngle:(float) newAngle
{
    //获取地图旋转角度发生变化前后的角度值
}

3 地图视图中心点变化监听

监听地图视图中心点的变化情况,获取变化前后的地图视图中心点坐标。

-(void)centerChangedWithMapView:(MGSMapView*) mapView oldCenter:(MGSDot) oldCenter newCenter:(MGSDot) newCenter
{
    //可以获取地图视图中心点发生变化前后的地图坐标点
}

4 地图位置变化监听

监听地图位置的变化情况,可获取变化前后的地图位置MGSMapPosition信息,具体包括:中心点、分辨率、旋转中心、旋转角、倾斜角信息。

-(void)positionChangeWithMapView:(MGSMapView*) mapView oldMapPosition:(MGSMapPosition*) oldMapPosition newMapPosition:(MGSMapPosition*) newMapPosition
{
    //获取地图变化的前后位置
}

5 刷新监听

监听地图刷新的事件,可判断地图刷新开始、完成的时间节点。

//地图开始刷新
-(void)willStartRefreshWithMapView:(MGSMapView *)mapView
{
    //地图将要刷新
}

//地图刷新完成
-(void)didFinishRefreshWithMapView:(MGSMapView *)mapView
{
    //地图刷新完成
}

6 动画监听

监听地图的动画操作,可判断动画开始、结束的时间节点。

//动画开始事件监听
-(void)animationStartWithMapView:(MGSMapView*) mapView animationType:(AnimationType) animationType
{
    //动画开始,并且可以获取到动画的类型
}

//动画结束事件监听
-(void)animationFinishWithMapView:(MGSMapView*) mapView animationType:(AnimationType) animationType isNormalFinish:(BOOL) isNormalFinish
{
    //动画结束
}

地图动画类型包括:

地图显示事件监听.jpg